package com.mynetwork.gcm;



import com.mynetwork.R;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;

/**
@class  SendNotification
@author PiaJang
@brief  상단 푸시 알림 생성 클래스
*/
public class SendNotification {
	private static int NOTI_ID = 100;
	
	/**
	 @brief 상단 통지를 만들어 보내기
	 @remarks ini 파일에 통지 카운트를 확인하고, 상단 통지가 클릭되면 브로드캐스팅 하도록 노티를 만들어 보낸다.
	 @param cnt Context 자료형
	 @param strMsg 상단 통지에 표시할 문자열
	*/
	public static void makeNoti(Context cnt, String title, String subtitle, String strMsg, int id){		
		//통지알림 보내기!!
		NotificationManager mNotiManager = (NotificationManager)cnt.getSystemService(cnt.NOTIFICATION_SERVICE);
		
		int nNowIndex = GCMManager.getNotiCount(cnt);
		nNowIndex++;
		
		Intent tempIntent = new Intent(GCMManager.NOTI_ACTION_NAME);
		tempIntent.putExtra(GCMManager.GCM_NOTI_STATE, GCMManager.GCM_NOTI_STATE_CLICKED);
		tempIntent.putExtra(GCMManager.GCM_NOTI_ID, id);
		
		PendingIntent content = PendingIntent.getBroadcast(cnt, 1, 
				tempIntent, PendingIntent.FLAG_UPDATE_CURRENT);
		
		tempIntent = new Intent(GCMManager.NOTI_ACTION_NAME);
		tempIntent.putExtra(GCMManager.GCM_NOTI_STATE, GCMManager.GCM_NOTI_STATE_DELETED);
		tempIntent.putExtra(GCMManager.GCM_NOTI_ID, id);
		
		PendingIntent delete = PendingIntent.getBroadcast(cnt, 2, 
				tempIntent, PendingIntent.FLAG_UPDATE_CURRENT);
	
		Notification noti = new Notification.Builder(cnt)
											.setContentTitle(title)
											.setTicker(subtitle)
											.setContentText(strMsg)
											.setSmallIcon(R.drawable.ic_launcher)
											.setLargeIcon(BitmapFactory.decodeResource(cnt.getResources(),R.drawable.ic_launcher))
											.setContentIntent(content)
											.setDeleteIntent(delete)
											.setAutoCancel(true)
											.setNumber(nNowIndex)
											.setWhen(System.currentTimeMillis())
											.getNotification();
		
		mNotiManager.cancelAll();
		mNotiManager.notify(NOTI_ID, noti);
		
		GCMManager.setNotiCount(cnt, nNowIndex);
	}
	
	/**
	 @brief 상단 노티 삭제
	 @remarks 상단에 모든 노티를 제거한다.
	 @param cnt Context 자료형
	*/
	public static void deleteNoti(Context cnt){		
		NotificationManager mNotiManager = (NotificationManager)cnt.getSystemService(cnt.NOTIFICATION_SERVICE);
		mNotiManager.cancelAll();		
	}
}
